import java.util.Vector; 
/**
 * 
 * @author alan
 * @version 0.1
 */
public class mVectors {
	
	
	public mVectors(){}
	
	/**
	 * 
	 * @param c parametre que indica el numero de posicions 
	 * @param i parametre que indica en cuante posisions s'incrementara
	 * @return la inicialitzacio d'un vector
	 */
	public static Vector<Integer> crear(int c, int i){
		return new Vector<Integer>(c,i);
	}
	
	/**
	 * 
	 * @param v vector on l'afegira
	 * @param n enter que afegira al la primera posicio disponible
	 */
	public static void instertarEntero(Vector<Integer> v, int n){
		v.add(n);
	}
	
	/**
	 * 
	 * @param v vector on l'afegira
	 * @param n enter que afegira
	 * @param i posicio on l'afegira
	 */
	public static void instertarEnteroEnPosicion(Vector<Integer> v, int n,int i){
		v.insertElementAt(n, i);
	}
	
	/**
	 * 
	 * @param v vector que ordenara
	 */
	public static void ordenar(Vector<Integer> v){
		int tmp;
		for (int j=0;j<v.size();j++)
	    for(int i=0;i<v.size()-1;i++) {
	    	if (Integer.parseInt(v.elementAt(i).toString())>Integer.parseInt(v.elementAt(i+1).toString())){
	    		tmp=Integer.parseInt(v.elementAt(i).toString());
	            v.set(i,Integer.parseInt(v.elementAt(i+1).toString()));
	            v.set(i+1,tmp);
	        }
	   }
	}
	
	/**
	 * 
	 * @param v vector on trebalara
	 * @param i enter que retornara
	 * @return
	 */
	public static int retornarElement(Vector<Integer> v, int i){
		return Integer.parseInt(v.elementAt(i).toString());
	}
	
	/**
	 * 
	 * @param v vector en que treballara
	 * @return enter amb el numero de posicions totals
	 */
	public static int retornarCapacitat(Vector<Integer> v){
		return v.capacity();
	}
	
	/**
	 * 
	 * @param v vector amb el que traballara
	 * @return numero de posicions ocupades
	 */
	public static int tamano(Vector<Integer> v){
		return v.size();
	}
	
	/**
	 * 
	 * @param v vector amv el que treballara
	 * @print imprimeix la posicio del vector amb el valor
	 */
	public static void mostrar(Vector<Integer> v){
		for (int i=0;i<v.size();i++) System.out.println("Posicio "+i+": "+v.elementAt(i));
	}
	
	/**
	 * 
	 * @param v1 vector 1
	 * @param v2 vector 2 
	 * @return vectors 1 i 2 junts  i ordenats
	 */
	public static Vector<Integer> fusionar(Vector<Integer> v1, Vector<Integer> v2){
		Vector<Integer> v = new Vector<Integer>(v1.size()+v2.size(),1);
		ordenar(v1);
		ordenar(v2);
		int y=0,x=0;
		while(x<v1.size() && y<v2.size()){
			if (v1.get(x)<=v2.get(y)){
				v.insertElementAt(Integer.parseInt(v1.elementAt(x).toString()),x);
				x++;
			} else {
				v.insertElementAt(Integer.parseInt(v2.elementAt(x).toString()),y);
				y++;
			}
		}
		
		return v;
	}
}
